@echo off
chcp 65001 >nul
title 修复4090服务器问题

echo.
echo ========================================
echo   修复4090服务器环境问题
echo ========================================
echo.

:: ================================
:: 问题1: npm执行策略问题
:: ================================
echo [问题1] 修复npm PowerShell执行策略
echo.
echo 当前npm无法运行，需要修改PowerShell执行策略
echo.
echo 请选择修复方式：
echo   1. 自动修复（推荐，需要管理员权限）
echo   2. 手动修复（显示修复命令）
echo   3. 跳过
echo.
choice /C 123 /N /M "请选择 [1-3]: "

if errorlevel 3 goto check_postgres
if errorlevel 2 goto manual_npm_fix
if errorlevel 1 goto auto_npm_fix

:auto_npm_fix
echo.
echo [执行] 修改PowerShell执行策略...
echo.
echo 正在以管理员权限运行...
powershell -Command "Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force' -Verb RunAs -Wait"
echo.
echo [✓] 执行策略已修改
echo.
echo 验证npm是否可用...
npm --version 2>nul
if errorlevel 1 (
    echo [警告] npm仍无法运行，请尝试手动修复
    goto manual_npm_fix
) else (
    echo [✓] npm已可以正常使用！
)
goto check_postgres

:manual_npm_fix
echo.
echo ========================================
echo   手动修复npm - 请按以下步骤操作
echo ========================================
echo.
echo 1. 以管理员身份打开PowerShell：
echo    - 按 Win + X
echo    - 选择 "Windows PowerShell (管理员)"
echo.
echo 2. 执行以下命令：
echo    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
echo.
echo 3. 关闭PowerShell窗口
echo.
echo 4. 重新打开普通PowerShell，测试：
echo    npm --version
echo.
pause
goto check_postgres

:: ================================
:: 问题2: PostgreSQL路径问题
:: ================================
:check_postgres
echo.
echo ========================================
echo [问题2] 检查PostgreSQL安装
echo ========================================
echo.

:: 尝试常见的PostgreSQL安装路径
set "PG_PATHS=C:\Program Files\PostgreSQL\17\bin;C:\Program Files\PostgreSQL\16\bin;C:\Program Files\PostgreSQL\15\bin;C:\Program Files\PostgreSQL\14\bin;C:\Program Files (x86)\PostgreSQL\17\bin;C:\Program Files (x86)\PostgreSQL\16\bin"

echo 正在搜索PostgreSQL安装位置...
echo.

set "FOUND_PG="
for %%P in ("%PG_PATHS:;=" "%") do (
    if exist "%%~P\psql.exe" (
        set "FOUND_PG=%%~P"
        echo [✓] 找到PostgreSQL: %%~P
        goto found_pg
    )
)

echo [警告] 未找到PostgreSQL安装
echo.
echo PostgreSQL可能安装在非标准位置。
echo 请手动查找psql.exe的位置，然后添加到系统PATH。
echo.
echo 常见位置：
echo   C:\Program Files\PostgreSQL\版本号\bin
echo   C:\PostgreSQL\版本号\bin
echo.
goto create_helper_scripts

:found_pg
echo.
echo PostgreSQL已找到，但未添加到系统PATH
echo.
echo 请选择操作：
echo   1. 自动添加到PATH（推荐）
echo   2. 显示手动添加步骤
echo   3. 跳过
echo.
choice /C 123 /N /M "请选择 [1-3]: "

if errorlevel 3 goto create_helper_scripts
if errorlevel 2 goto manual_pg_fix
if errorlevel 1 goto auto_pg_fix

:auto_pg_fix
echo.
echo [执行] 添加PostgreSQL到系统PATH...
echo.
setx PATH "%PATH%;%FOUND_PG%" >nul 2>&1
if errorlevel 1 (
    echo [警告] 自动添加失败，请尝试手动添加
    goto manual_pg_fix
) else (
    echo [✓] PostgreSQL路径已添加到PATH
    echo [提示] 请重新打开命令行窗口，使PATH生效
)
goto create_helper_scripts

:manual_pg_fix
echo.
echo ========================================
echo   手动添加PostgreSQL到PATH
echo ========================================
echo.
echo 1. 右键 "此电脑" → 属性
echo 2. 点击 "高级系统设置"
echo 3. 点击 "环境变量"
echo 4. 在 "用户变量" 或 "系统变量" 中找到 "Path"
echo 5. 点击 "编辑"
echo 6. 点击 "新建"
echo 7. 添加以下路径：
echo.
echo    %FOUND_PG%
echo.
echo 8. 点击 "确定" 保存
echo 9. 重新打开命令行窗口测试：psql --version
echo.
pause

:: ================================
:: 创建辅助脚本
:: ================================
:create_helper_scripts
echo.
echo ========================================
echo [3/3] 创建便捷脚本
echo ========================================
echo.

:: 创建数据库初始化SQL
echo [1] 创建数据库初始化脚本...
(
echo -- 思和智库数据库初始化脚本
echo -- 请在pgAdmin或psql中执行
echo.
echo -- 1. 创建数据库
echo CREATE DATABASE shihe_knowledgehub
echo     WITH 
echo     OWNER = postgres
echo     ENCODING = 'UTF8'
echo     LC_COLLATE = 'Chinese_China.936'
echo     LC_CTYPE = 'Chinese_China.936'
echo     TABLESPACE = pg_default
echo     CONNECTION LIMIT = -1;
echo.
echo -- 2. 连接到新数据库
echo \c shihe_knowledgehub
echo.
echo -- 3. 安装必要的扩展（可选）
echo CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
echo CREATE EXTENSION IF NOT EXISTS "pg_trgm";
echo.
echo -- 完成！
echo SELECT 'Database created successfully!' AS status;
) > init_database.sql
echo [✓] 已创建: init_database.sql

:: 创建psql快捷脚本
echo [2] 创建psql快捷启动脚本...
(
echo @echo off
echo :: 快速启动psql连接到思和智库数据库
echo echo 连接到数据库: shihe_knowledgehub
echo echo 用户: postgres
echo echo.
if defined FOUND_PG (
    echo "%FOUND_PG%\psql.exe" -U postgres -d shihe_knowledgehub
) else (
    echo psql -U postgres -d shihe_knowledgehub
)
echo pause
) > connect_db.bat
echo [✓] 已创建: connect_db.bat

echo.
echo ========================================
echo   修复完成！
echo ========================================
echo.
echo [已创建的文件]
echo   ✓ init_database.sql     - 数据库初始化SQL脚本
echo   ✓ connect_db.bat        - 快速连接数据库
echo.
echo [下一步操作]
echo.
echo 1. 初始化数据库（两种方式）：
echo.
echo    方式A: 使用pgAdmin（推荐）
echo      - 打开pgAdmin
echo      - 右键 Databases → Create → Database
echo      - 名称输入: shihe_knowledgehub
echo      - 点击 Save
echo.
echo    方式B: 使用SQL脚本
echo      - 打开pgAdmin或psql
echo      - 执行 init_database.sql 脚本
echo.
echo 2. 验证npm已修复：
echo    - 打开新的PowerShell窗口
echo    - 运行: npm --version
echo.
echo 3. 验证PostgreSQL已修复：
echo    - 打开新的命令行窗口
echo    - 运行: psql --version
echo.
echo 4. 运行部署脚本：
echo    - 双击: QUICK_DEPLOY_4090.bat
echo.
echo ========================================
echo.
pause

